package com.czk.rdd.operator.action

import org.apache.spark.{SparkConf, SparkContext}

/**
 * @Author:ChenZhangKun
 * @Date: 2021/12/10 14:05
 */
object Reduce {
  def main(args: Array[String]): Unit = {
    val sparkConf = new SparkConf().setMaster("local[*]").setAppName("RDD")
    val sc = new SparkContext(sparkConf)
    val rdd = sc.makeRDD(List(1,2,3,4))
    // sc.runJob(this, (iter: Iterator[T]) => iter.toArray)
    // 两两结合
    val i = rdd.reduce(_+_)
    println(i)
    // 采集，将不同分区的数据按照分区数据顺序采集到Driver端
    val ints: Array[Int] = rdd.collect()

    println(ints.mkString(","))

    val l = rdd.count()

    println("数据源中数据个数为"+l)

    val first = rdd.first()

    println("数据源中的第一个"+first)

    val ints1: Array[Int] = rdd.take(3)

    println("获取3个数据"+ints.mkString(","))
    // 默认是升序排列
    val ints2: Array[Int] = rdd.takeOrdered(3)

    println("拿到排序后的数据"+ints2.toString)

    sc.stop()
  }
}
